﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

namespace Protocolo
{
    class MP2032
    {
        /*
		 ===============================================================================
			********************************************************************************

								DECLARAÇÃO DAS FUNÇÕES DA MP2032.DLL
  
			********************************************************************************
		 ===============================================================================
		*/

        #region Funções Gerais

        /// <summary>
        /// Configurar o modelo da impressora não fiscal em uso. IMPORTANTE: Esta função deve ser usada antes da função IniciaPorta
        /// </summary>
        /// <param name="model">INTEIRO 0 = MP-20 TH, MP-2000 CI ou MP-2000 TH, 1 = MP-20 MI, MP-20 CI ou MP-20 S, 2 = Blocos térmicos (com comunicacao serial DTR/DSR), 3 = Bloco 112 mm, 4 = ThermalKiosk, 5 = MP-4000 TH, 7 = MP-4200 TH, 8 = MP-2500 TH 0 = Default</param>
        /// <returns>INTEIRO - Indica se a função conseguiu enviar o comando para impressora. 1 = Ok, -2 = Parâmetro inválido</returns>
        [DllImport("MP2032.dll")]
        public static extern int ConfiguraModeloImpressora(int model);

        /// <summary>
        /// Esta função tem por objetivo abrir a porta de comunicação, onde a impressora está conectada
        /// </summary>
        /// <param name="porta">STRING nome da porta de comunicação</param>
        /// <returns>INTEIRO - Indica se a função conseguiu enviar o comando para impressora.</returns>
        [DllImport("MP2032.dll")]
        public static extern int IniciaPorta(String porta);

        /// <summary>
        ///Esta função tem por objetivo retornar o estado da impressora.
        /// </summary>
        /// <returns>INTEIRO - Indica se a função conseguiu enviar o comando para impressora.</returns>
        [DllImport("MP2032.dll")]
        public static extern int Le_Status();

        /// <summary>
        /// Autentica DOC. Informar o texto que desejaregistrar e o tempo de espera, definido em milissegundos.
        /// </summary>
        /// <param name="texto">STRING Texto a ser impresso</param>
        /// <param name="tempo">INTEIRO Tempo de espera para a impressão. Ex: 5000 = 5 segundos de espera para a inserção do documento.</param>
        /// <returns>INTEIRO - Indica se a função conseguiu enviar o comando para impressora.</returns>
        [DllImport("MP2032.dll")]
        public static extern int AutenticaDoc(String texto, int tempo);

        #endregion
    }
}
